#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <atomic>
#include <opencv2/opencv.hpp>
#include <thread>
#include <gflags/gflags.h>
#include <QFileDialog>
#include <QMessageBox>
#include <QString>
#include <QDir>
#include <QDebug>
#include <QLabel>
#include <QImage>
#include <QPixmap>
#include <QFileInfo>
#include <QListWidget>
#include <QMap>

#include "sam.h"

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    bool parseDeviceName(const std::string& name, Sam::Parameter::Provider& provider);

    // 保存自动分割后的图片
    void saveSegmentedObjects(const cv::Mat& outImage, const cv::Mat& originalImage, const std::string& saveDir, QListWidgetItem* originalImageItem);

    // 将生成的图片放置
    void addImagesToListWidget(const std::vector<std::string>& imagePaths, QListWidgetItem* originalImageItem);

private slots:
    void on_SegmentButton_clicked();

    void on_pushButton_clicked();

    void on_OutImageList_itemClicked(QListWidgetItem *item);

private:
    Ui::MainWindow *ui;
    QString _imageFilePath = nullptr;
    QMap<QString,QString> imageMap;
};
#endif // MAINWINDOW_H
